\section{Requirements}

\subsection{Scientific Requirements}

\subsubsection{Swappable Dynamics}

\begin{itemize}

\item {\bf Interoperable Dycores} 
The software will implement a dynamical core interface that allows alternative dynamics packages to be incorporated.  Dynamical cores will be standalone 
packages.

\item {\bf Tested standard interface} 
Test procedures will be established to validate the interface.

\end{itemize}

\subsubsection{Atmosphere-Land Interface}

The land surface package will execute in parallel with the atmospheric model or with the CSM coupler. 

The proposal for the redesign of the flux coupler will have an impact on the design of the atmospheric model.  In particular, the
option for including the land surface model with the atmospheric model, using the same grid (as in PCM), will have
implications for the structure of the atmospheric model. Implementing efficient parallel algorithms for the land surface model is
tied strongly to the parallel data decomposition of the atmospheric model.  The code structure is problematic: it allows a
separate executable for the LSM or an interface as part of the CCM-4 executable; it is not clear how to construct this
interface except with a large block of ifdefs.  The design will be an early priority. 

\subsection{Computational Requirements}

A scalable parallel design using a mix of distributed- and shared-memory parallelism is important to maximize throughput and
scientific productivity using the target platforms.  The design must allow for adequate granularity in the parallel decomposition
to effectively utilize the scalable, high performance computers.  Of course, the design must pay special attention to
effectiveness on machines emphasizing low-resolution ensemble runs for DOE applications.  Decomposing the spatial
domains in two or more directions can yield the required granularity.  The current assumption of this programming model is that
the "inner" directions will be handled in shared memory using the standard OpenMP multitasking directives and the "outer"
directions of the decomposition will be implemented for distributed-memory message passing.  Thus a two-dimensional
decomposition for the atmospheric code could be achieved by decomposing the latitudes in distributed memory and within each
vertical level using shared memory.  Other decompositions may yield better performance, especially where load balancing is of
concern.  The parallel decomposition can be different for different dynamical cores. A different decomposition for the
calculation of the physical parameterizations (column physics) may also be advantageous.  Certainly, to achieve performance
portability across the target architectures, a degree of flexibility is a necessary design goal. 

\subsubsection{Scalability}
Two degree models (eg. T42L31) will scale to 256 processors or more.

\subsubsection{Performance Portability}
Processor architecture (fast cache, vector) will be exploited.

\subsubsection{Load Balancing}
Load balancing will be performed by the code. 






